#include <vector>
#include <set>
#include <iostream>
using namespace std;

int maximumProduct(vector<int>& nums) {
    int n = nums.size();
    sort(nums.begin(),nums.end());
    // 冒泡排序会超时
    // for(int i = 0; i < nums.size() - 1; i++){
    //     for(int j = 0; j < nums.size() - i - 1; j++){
    //         if(nums[j] > nums[j + 1]){
    //             swap(nums[j], nums[j+1]);
    //         }
    //     }
    // }

    // 思想一样，代码更简约
    return max(nums[0] * nums[1] * nums[n - 1], nums[n - 3] * nums[n - 2] * nums[n - 1]);
    // int f = nums[0] * nums[1] * nums[nums.size()-1];
    // int s = nums[nums.size()-1] * nums[nums.size()-2] * nums[nums.size()-3];
    // return f > s ? f : s;
}

int main(){
    vector<int> nums = { -1,-2,-3,-4 }; 
    cout << maximumProduct(nums) <<endl;
    return 0;
}